#include "ringBuffer.hpp"
#include <ctime>
#include <functional>
using namespace ringBufferMoudle;
using task_t = std::function<void()>;
int main()
{
    auto rb = new ringBuffer<int>(5); // 共享资源
    auto consumer =
        [](void *args) -> void *
    {
        auto rb = static_cast<ringBuffer<int> *>(args);
        int data;
        while (true)
        {
            // sleep(1);
            rb->pop(&data);
            cout << "消费了一个数据: " << data << endl; 
        }

        return nullptr;
    };
    auto producter =
        [](void *args) -> void *
    {
        auto rb = static_cast<ringBuffer<int> *>(args);
        int data = 0;
        while (true)
        {
            rb->emplace(data);
            std::cout << "生产了一个数据：" << data << std::endl;
            data++;
        }
        return nullptr;
    };
    //  ! 交易场所不知可以传递数，还可以传递任务
    pthread_t c, /*c1, p,*/ p; // 消费者和生产者
    pthread_create(&c, nullptr, consumer, rb);
    pthread_create(&p, nullptr, producter, rb);
    // zdl::blockQueue<task_t> *bq
    pthread_join(c, nullptr);
    pthread_join(p, nullptr);
    delete rb;
    return 0;
}